// 『...』 扩展运算符能将『数组』转换为逗号分隔的『参数序列』
//声明一个数组 ...
const persons = ['小明', '小红', '小昂']
// => '小明', '小红', '小昂'
console.log(...persons) //小明 小红 小昂
// 1. 数组的合并
const student = ['王一', '张二']
const allPerson = [...persons, ...student]
console.log(allPerson) //[ '小明', '小红', '小昂', '王一', '张二' ]
// 2. 数组的克隆
const persons2 = [...persons]
// 3. 将伪数组转为真正的数组 
// 常用于页面将document.querySelectorAll('div')获取的伪数组转化为真正的数组
console.log([...'hello']);//[ 'h', 'e', 'l', 'l', 'o' ]
// 4.用于函数调用
function push(array, ...items) {
  array.push(...items)
  console.log(array)//[ 4, 38, 6, 4, 8 ]
}
function add(x, y) {
  return x + y
}
const numbers = [4, 38]
console.log(add(...numbers)) // 42
push(numbers,6,4,8)

// 扩展运算符后面还可以放置表达式。
let x = 3;
const arr = [
  ...(x > 0 ? ['a'] : []),
  'b',
  ]
  console.log(arr)//[ 'a', 'b' ]
// 如果扩展运算符后面是一个空数组，则不产生任何效果。
console.log(...[],2);//2